package jfuzzyprincepless.zarchive.agents;

import java.util.List;

import jfuzzyprincepless.negotiation.INegotiationContext;
import jfuzzyprincepless.agents.INegotiatingAgent;

// TODOLONG: review javadoc with naming-concepts
public interface IUtilityFuncNegotiationAgent
	extends INegotiatingAgent
{
	/**
	 * computes value of this agent's utility function
	 */
	public double computeUtility(
		INegotiationContext context
	);

	/**
	 * argument based negotiation
	 * adds the most critical parameters here
	 */
	public void addCriticalParams(
		List<Object> criticalParams
	);

	/**
	 * after each IUtilityFuncNegotiation negotiation stage
	 */
	public void onSingleNegotiationStageEnd(
		INegotiationContext context
	);
}
